home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
cpp_libs
/
answrbok
/
5_9.lha
/
5_9
/
5_9c2.c
< prev
next >
Wrap
Text File
|
1993-08-08
|
1KB
|
70 lines
* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */
* The C++ Answer Book */
* Tony Hansen */
* All rights reserved. */
/ at most m ints in 1..n
oid set_is(intset& is, int m, int n)
if (m < 1 || n < m) error("illegal intset size");
is.cursize = 0;
is.maxsize = m;
is.x = new int[is.maxsize];
oid delete_is(intset& is)
delete is.x;
/ is "t" a member?
nt member_is(intset& is, int t)
int l = 0;
int u = is.cursize - 1;
while (l <= u) {
int m = (l+u)/2;
if (t < is.x[m])
u = m-1;
else if (t > is.x[m])
l = m+1;
else
return 1; // found
}
return 0; // not found
/ add "t" to set
include <swap.h>
oid insert_is(intset& is, int t)
if (++is.cursize > is.maxsize)
error("too many elements");
is.x[is.cursize - 1] = t;
for (int i = is.cursize - 1;
i > 0 && is.x[i-1] > is.x[i];
i--)
swap(is.x[i], is.x[i-1]);
oid iterate_is(intset&, int& i)
i = 0;
nt ok_is(intset& is, int& i)
return i < is.cursize;
nt next_is(intset& is, int& i)
return is.x[i++];